package com.zbs.framework.security.service;

import com.zbs.framework.security.entity.SecurityUser;

import java.util.List;
import java.util.Map;

public interface TokenLoginService {

    /**
     * 登录成功之后的操作
     * --例如保存token
     *
     * @param token
     * @param user
     */
    Map<String, Object> successfulAuthentication(String token, SecurityUser user);


    /**
     * 登录
     *
     * @param id              用户ID
     * @param username        用户名称（唯一账号）
     * @param entryType       登录入口类型（例如 1 web  2 app 等等）
     * @param pwd             密码 （如果手机号 可以不填，填null 或者空字符串）
     * @param presentedPassword   用户输入的密码 （如果手机号 可以不填，填null 或者空字符串）
     * @param userType        用户类型
     * @param permissions     权限
     * @param userInfo        用户基本信息
     * @param otherParameters 其他参数
     * @param isEnabled       是否禁用
     */
    Map<String, Object> login(Long id, String username, String pwd, String presentedPassword,String entryType, Character userType, List<String> permissions, Object userInfo, Map<String, Object> otherParameters, boolean isEnabled);


    /**
     * 登录
     *
     * @param id              用户ID
     * @param username        用户名称（唯一账号）
     * @param pwd             密码 （如果手机号 可以不填，填null 或者空字符串）
     * @param presentedPassword   用户输入的密码 （如果手机号 可以不填，填null 或者空字符串）
     * @param permissions     权限
     * @param userInfo        用户基本信息
     * @param otherParameters 其他参数
     * @param isEnabled       是否禁用
     */
    Map<String, Object> login(Long id, String username, String pwd, String presentedPassword, List<String> permissions, Object userInfo, Map<String, Object> otherParameters, boolean isEnabled);


    /**
     * 登录
     *
     * @param id              用户ID
     * @param username        用户名称（唯一账号）
     * @param permissions     权限
     * @param userInfo        用户基本信息
     * @param otherParameters 其他参数
     * @param isEnabled       是否禁用
     */
    Map<String, Object> login(Long id, String username, List<String> permissions, Object userInfo, Map<String, Object> otherParameters, boolean isEnabled);


    /**
     * 登录
     *
     * @param id              用户ID
     * @param username        用户名称（唯一账号）
     * @param entryType       登录入口类型（例如 1 web  2 app 等等）
     * @param userType        用户类型
     * @param permissions     权限
     * @param userInfo        用户基本信息
     * @param otherParameters 其他参数
     * @param isEnabled       是否禁用
     */
    Map<String, Object> login(Long id, String username,String entryType, Character userType, List<String> permissions, Object userInfo, Map<String, Object> otherParameters, boolean isEnabled);

}
